.. _cmmGnInitFromFile: cmmGnInitFromFile ================== ------------------ SYNOPSYS ```````````````` .. code-block:: none VT_I4 cmmGnInitFromFile ( [in] VT_STR szCmeFile ) DESCRIPTION ````````````` - 커미조아 환경 설정 파일(.CME2)을 통해 설정된 값으로 모션제어기 및 디지털 입출력 장치의 각종 환경을 자동으로 설정합니다. PARAMETER ``````````` -szCmeFile : CME2 파일의 절대 경로 혹은 파일의 상대 경로를 지정합니다. RETURN VALUE ````````````` +--------------+----------------+ | Value | Meaning | +==============+================+ | 음수 | 수행 실패 | +--------------+----------------+ | cmERR_NONE | 수행 성공 | +--------------+----------------+ Example ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ void InitMotionDevices() { //////////////////////////////////////////////////////////////////////////////////////// // [CAUTION]: 아래와 다른 CME 파일을 사용하는 경우에는 아래 코드를 수정하여 올바른 CME 파일의 // 경로를 지정하십시오. #define CME_FILE_NAME "Default.cme2" char szCmeFilePath[MAX_PATH], szSystemDir[MAX_PATH]; /* 윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32) */ GetSystemDirectory(szSystemDir, MAX_PATH); sprintf(szCmeFilePath, "%s\\%s", szSystemDir, CME_FILE_NAME); if(cmmGnInitFromFile(szCmeFilePath) != cmERR_NONE){ cmmErrShowLast(NULL); // 에러 발생하였으면 에러 디스플레이. } else{ ////////////////////////////////////////////////////////////////////////////////// // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는 // 아래와 같이 하면 됩니다. long nNumAxes_installed, nNumAxes_defined; cmmAdvGetNumAvailAxes(&nNumAxes_installed); // 현재 실제로 PC 에 장착되어 있는 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일) cmmAdvGetNumDefinedAxes(&nNumAxes_defined); // CME 파일에서 정의한 축 수(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.) if(nNumAxes_installed != nNumAxes_defined){ MessageBox(NULL, "현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다", "Warning", MB_OK | MB_ICONWARNING); } } // SERVO-ON // long nNumAxes; cmmAdvGetNumDefinedAxes(&nNumAxes); for(int i=0; i cmERR_NONE Then Call cmmErrShowLast(Null) Else ' ************************************************************************************************ ' CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인 (確認)하고자 할 때는 ' 아래와 같이 하면 됩니다. ' ************************************************************************************************ Call cmmAdvGetNumAvailAxes(nNumAxes_installed) Call cmmAdvGetNumfinedAxes(nNumAxes_defined) If nNumAxes_installed <> nNumAxes_defined Then MsgBox ("현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다") End If End If ' SERVO-ON Call cmmAdvGetNumDefinedAxes(nNumAxes) For i = 0 To nNumAxes Call cmmGnSetServoOn(i, cmTRUE) Next End Sub -------------------------------------------------------------------------------------------------------------- Delphi Const CME_FILE_NAME = 'Default.cme2'; Const MAX_PATH = 100; procedure InitMotionDevices(); var szCmeFilePath : Array[0..MAX_PATH] of Char; szSystemDir : Array[0..MAX_PATH] of Char; nNumAxes_installed: LongInt; nNumAxes_defined: LongInt; nNumAxes : LongInt; i : LongInt; begin //윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32) GetSystemDirectory(@szSystemDir, MAX_PATH); Format('%s\\%s',[ szSystemDir, CME_FILE_NAME]); if(cmmGnInitFromFile(@szCmeFilePath) <> cmERR_NONE) then begin cmmErrShowLast(0); // 에러 발생하였으면 에러 디스플레이. end else begin ////////////////////////////////////////////////////////////////////////////////// // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는 // 아래와 같이 하면 됩니다. cmmAdvGetNumAvailAxes(@nNumAxes_installed); // 현재 실제로 PC 에 장착되어 있는 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일) cmmAdvGetNumDefinedAxes(@nNumAxes_defined); // CME 파일에서 정의한 축 수(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.) if(nNumAxes_installed <> nNumAxes_defined) then begin Writeln('현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다'); end; end; // SERVO-ON // cmmAdvGetNumDefinedAxes(@nNumAxes); //i := 0; For i := 0 to nNumAxes do cmmGnSetServoOn(i, cmTRUE); end;